function [index] = estimate_boundary(boundary_data,judge_data)
%根据最新的文章逻辑，不需要判断是否在边界上了，这些都交给异常点识别处理
%本函数的主要作用是判断某些数据是否在对应的边界范围内或者边界上
%   boundary_data 边界范围数据,主要是经纬度值
%   judge_data  需要被判断的数据

%构建边界点集
boundary_x=[boundary_data.Lon(1) boundary_data.Lon(2) boundary_data.Lon(2) boundary_data.Lon(1) boundary_data.Lon(1)];
boundary_y=[boundary_data.Lat(1) boundary_data.Lat(1) boundary_data.Lat(2) boundary_data.Lat(2) boundary_data.Lat(1)];

%判断点的点集
judge_x=[judge_data.Lon(1) judge_data.Lon(2)];
judge_y=[judge_data.Lat(1)  judge_data.Lat(2)];

%0表示数据不在多边形范围内，也不在边界上， 1表示在范围内或者边界上
[isIn ,isOn]=inpolygon(judge_x,judge_y,boundary_x,boundary_y);
%既不在内部，也不在边界上
index = find(~isIn & ~isOn);%返回到是被判断的数据行号

%如果出现以下情形，第三四行是重复值，但是从边界看，两行数据都越界，则随机保留一个即可，剩余问题交给下一步的轨迹折线角度处理
% '2021-05-01 13:23:25'	122.262271666666	29.7859166666666
% '2021-05-01 13:23:36'	122.260366666666	29.7876500000000
% '2021-05-01 13:23:36'	122.260366666666	29.7876333333333
% '2021-05-01 13:24:06'	122.261491666666	29.7866166666666
if length(index)>1
    index=index(1);
end

end